It is often necessary for technicians, typically programmer, to develop and manage an ensemble of work operations. These work operations can be developed and maintained with the aid of processing means, such as computers and computer systems, in a workflow management system.
For instance, in the field of customer relationship management (CRM), the adoption of software-based systems to help automate and manage business processes and their underlying logic is well-known. Such systems provide communication between employees of different corporate functions (e.g. sales, marketing, customer service and technical support) as well as mechanisms to synchronize tasks, as detailed in workflows representing the relevant sale, marketing or support processes. Such systems also facilitate paperless data entry, help reduce the risk of human error, and otherwise generally improve performance.
In a typical implementation, a desired workflow is enforced by an application operating upon data stored in a multitenant database. The application is typically designed in an object oriented environment, often using a programming framework provided by the workflow management system. The programming framework permits application design and configuration using high-level configuration tools specific to the workflow management system.
Optionally, the application is designed to be usable by and interact with users from different organizations or companies, and/or users working in different geographical locations, each via one or more servers, workstations or mobile devices. An example of a workflow management system is the well-known “Salesforce.com” environment.
The design of the application is usually based on design documentation written during an analysis phase, as well as on a process map that describes desired sequences of operations and data transformations required by the workflow as a whole. An application developer (e.g., a programmer) interprets this information, envisions the tasks to be executed, and uses the mentioned high-level configuration tools to define a suitable workflow within the capabilities and limits of the high-level configuration tools endemic to the workflow management system; when required, the application developer can also develop custom objects in an attempt to help overcome shortcomings of the configuration tools.
Implementation of a desired workflow is typically, however, heavily dependent on interpretation of the design documentation and capabilities provided by the high-level configuration tools (of a workflow management system) and the skills of a programmer. As such, care must be taken by the programmer to properly render the desired business logic. For example, the application developer typically needs to design the system in a manner that avoids entry into a state not consistent with the desired business logic. Furthermore, it should be appreciated that it is typically desired to provide on-screen information pertinent to the specific process or action context, in dependence on current logical state of the business process. As an example, it is typically desired to display instructions, checkboxes, drop down menus and other command or support functions which are suitable to a given context within the workflow.
Developing and maintaining the application within these constraints can be both expensive and time consuming, as the required contextual support typically requires a programmer to manually code each command or option made available to an end-user (e.g., active buttons) for each step of the desired workflow. This process is especially painstaking for workflow applications involving hundreds of possible transitions between processing stages, or other complex flow structure.